home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / CUGUK / COMMS / C011.ZIP / UNLUMP.C < prev    next >
Text File  |  1990-01-19  |  2KB  |  81 lines

  1. /********************************************************************
  2.  * C Users Group (U.K) C Source Code Library File CUGLIB.011        *
  3.  * Inquiries to: M. Houston, 36 Whetstone Clo. Farquhar Rd.         *
  4.  * Edgbaston, Birmingham B15 2QN ENGLAND                *
  5.  ********************************************************************
  6.  * File name: unlump.c
  7.  * Program name: unlump
  8.  * Source of file: The Public Domain Software Library.
  9.  * Purpose: Break apart files lumped together by LUMP 
  10.  * Changes: <who what when & why major changes have been made>      
  11.  ********************************************************************/
  12.  
  13.  
  14. #include "stdio.h"
  15.  
  16. #define  BUFL  512
  17.  
  18. FILE *infile, *outfile;
  19.  
  20. main(argc,argv)
  21. int argc;
  22. char *argv[];
  23. {
  24.    int c, i;
  25.    char filename[61];
  26.    char buf[BUFL];
  27.    int opened = 0;
  28.  
  29.    if(argc<2)  { usage(); exit(0); }
  30.  
  31.    argc--;
  32.    if( (infile=fopen(argv[1], "r")) == NULL )     inerr();
  33.    while( fgets(buf, BUFL, infile) != NULL )  {
  34.       filename[0] = '\0';
  35.       sscanf( buf, "*FILE: %60s", filename );
  36.       if( filename[0] != '\0' )  {
  37.          if(opened)  fclose(outfile);
  38.          printf( "*FILE: %s\n", filename );
  39.          if( (outfile=fopen(filename,"w")) == NULL )    outerr();
  40.          opened = 1;
  41.          continue;
  42.          }
  43.       if( !opened )  fmterr();
  44.       if( fputs(buf, outfile) == EOF )  outerr();
  45.       }
  46.    if( ferror(infile) )  inerr();
  47.    fclose(infile);
  48. }
  49.  
  50.  
  51. usage()
  52. {
  53.    printf("Usage:  unlump infile \n");
  54.    printf("   UnLump the input file into output files named in it.\n");
  55.    printf("   Files are separated by  a line with the format:\n");
  56.    printf("      *FILE: filename.ext\n\n");
  57. }
  58.  
  59.  
  60. inerr()
  61. {
  62.    printf("\nError opening or reading input file \n");
  63.    fclose(infile);
  64.    exit(1);
  65. }
  66.  
  67.  
  68. outerr()
  69. {
  70.    printf("\nError opening or writing output file \n");
  71.    fclose(outfile);
  72.    exit(1);
  73. }
  74.  
  75.  
  76. fmterr()
  77. {
  78.    printf("\nFile does not have proper LUMP format\n");
  79.    exit(1);
  80. }
  81.